home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / vmStat.h < prev    next >
C/C++ Source or Header  |  1991-03-04  |  7KB  |  183 lines

  1. /*
  2.  * vmStat.h --
  3.  *
  4.  *    The statistics structure for the vm module.
  5.  *
  6.  * Copyright (C) 1986 Regents of the University of California
  7.  * All rights reserved.
  8.  *
  9.  *
  10.  * $Header: /sprite/src/lib/include/RCS/vmStat.h,v 8.4 91/03/04 16:09:28 kupfer Exp $ SPRITE (Berkeley)
  11.  */
  12.  
  13. #ifndef _VMSTAT
  14. #define _VMSTAT
  15.  
  16. #ifdef KERNEL
  17. #include "vmMachStat.h"
  18. #else
  19. #include <kernel/vmMachStat.h>
  20. #endif
  21.  
  22.  
  23. /*---------------------------------------------------------------------*/
  24.  
  25. /*
  26.  * Virtual memory statistics structure.
  27.  */
  28.  
  29. typedef struct {
  30.     int    numPhysPages;        /* The number of physical pages available. */
  31.     /*
  32.      * Different types of pages
  33.      */
  34.     int    numFreePages;        /* Number of pages on the free list. */
  35.     int    numDirtyPages;        /* Number of pages on the dirty list. */
  36.     int    numReservePages;    /* Number of pages held in reserve for the
  37.                  * kernel. */
  38.     int    numUserPages;        /* Number of pages on the allocate list.  Each
  39.                  * of these pages must be used by user
  40.                  * processes. */
  41.     int    kernStackPages;        /* Number of pages allocated to the kernel.*/
  42.     int kernMemPages;        /* Number of pages allocated to kernel code
  43.                  * + data. */
  44.     /*
  45.      * Page fault statistics.
  46.      */
  47.     int    totalFaults;        /* The total number of page faults that have
  48.                    occured. */
  49.     int    totalUserFaults;    /* The total number of page faults that have
  50.                    occured because of a user bus error. */
  51.     int    zeroFilled;        /* Page faults that were satisfied by zero
  52.                    filling the page. */
  53.     int    fsFilled;        /* Page faults that were satisifed by reading
  54.                    in from the file system. */
  55.     int    psFilled;        /* Page faults that were satisfied by reading
  56.                    in from the page server. */
  57.     int    collFaults;        /* Page faults that collided with another page
  58.                    fault in progress on the same page. */
  59.     int    quickFaults;        /* Page faults that were satisfied by just
  60.                    revalidating the page. */
  61.     int    codeFaults;        /* Code segment faults, ignoring quickFaults.*/
  62.     int    heapFaults;        /* Heap segment faults, ignoring quickFaults.*/
  63.     int    stackFaults;        /* Stack segm't faults, ignoring quickFaults.*/
  64.     /*
  65.      * Page allocation stats.
  66.      */
  67.     int    numAllocs;        /* Total number of page allocations. */
  68.     int    gotFreePage;        /* Number of allocations by using a free page.*/
  69.     int    pageAllocs;        /* Calls to internal page allocator. */
  70.     int    gotPageFromFS;        /* Number of allocations satisfied by 
  71.                  * stealing a page from the file system. */
  72.     int    numListSearches;    /* Number of allocations that actually search
  73.                  * the allocation list. */
  74.     int    usedFreePage;        /* List searches satisfied with free page. */
  75.     int    lockSearched;        /* Number of locked pages encountered 
  76.                  * while searching list. */
  77.     int    refSearched;        /* Number of referenced pages encountered 
  78.                  * while searching list. */
  79.     int    dirtySearched;        /* Number of dirty pages encountered 
  80.                  * while searching list. */
  81.     int    reservePagesUsed;    /* The number of pages held in reserve that */
  82.  
  83.     /*
  84.      * Dirty page statistics.
  85.      */
  86.     int    pagesWritten;        /* The number of pages that were written out
  87.                    to the page server. */
  88.     int    cleanWait;        /* The number of times that a segment being 
  89.                    cleaned has to wait for a page to finish
  90.                    being cleaned. */
  91.     int    pageoutWakeup;        /* The number of times that the pageout daemon
  92.                    wakes up. */
  93.  
  94.     int    pageoutNoWork;        /* The number of times that the pageout daemon
  95.                    woke up and there was nothing to do. */
  96.     int pageoutWait;        /* The number of times that a process has to
  97.                    wait for the pageout daemon to finish 
  98.                    because too many pages were dirty. */
  99.     /*
  100.      * Page mapping statistics.
  101.      */
  102.     int    mapPageWait;        /* The number of times that have to wait 
  103.                    because of run out of entries to map 
  104.                    pages. */
  105.     int    accessWait;        /* The number of times that have to wait
  106.                    because of run out of entries to make
  107.                    pages accessible. */
  108.     /*
  109.      * Machine dependent statistics.
  110.      */
  111.     VmMachDepStat    machDepStat;
  112.     /*
  113.      * The minimum number of virtual memory pages
  114.      * that the system guarantees itself. 
  115.      */
  116.     int    minVMPages;
  117.     /*
  118.      * File system mapping stats.
  119.      */
  120.     int    fsAsked;        /* The number of times that the file system
  121.                  * asked us for our reference time. */
  122.     int    haveFreePage;        /* We have a free page when fs asks us for the
  123.                  * reference time. */
  124.     int    fsMap;            /* The number of pages that the file system
  125.                  * got from us. */
  126.     int    fsUnmap;        /* The number of pages that the file system
  127.                  * returned to us. */
  128.     int    maxFSPages;        /* The maximum number of pages given to the
  129.                  * file system. */
  130.     int    minFSPages;        /* The minimum number of pages given to the 
  131.                  * file system. */
  132.     /*
  133.      * Copy-on-write info.
  134.      */
  135.     int    numCOWHeapPages;    /* Heap pages that were made copy-on-write. */
  136.     int    numCOWStkPages;        /* Stack pages that were made copy-on-write. */
  137.     int numCORHeapPages;    /* Heap pages that were made copy-on-ref. */
  138.     int numCORStkPages;        /* Stack pages that were made copy-on-ref. */
  139.     int    numCOWHeapFaults;    /* Heap copy-on-write faults. */
  140.     int    numCOWStkFaults;    /* Stack copy-on-write faults. */
  141.     int    quickCOWFaults;        /* COW faults that were unnecessary. */
  142.     int numCORHeapFaults;    /* Heap copy-on-ref faults. */
  143.     int numCORStkFaults;    /* Stack copy-on-ref faults. */
  144.     int    quickCORFaults;        /* COR faults that were unnecessary. */
  145.     int swapPagesCopied;    /* The number of swap file page copies. */
  146.     int    numCORCOWHeapFaults;    /* Number of copy-on-reference heap pages that
  147.                  * get modified after they are copied. */
  148.     int    numCORCOWStkFaults;    /* Number of copy-on-reference stack pages that
  149.                  * get modified after they are copied. */
  150.     /*
  151.      * Recycled potentially modified page stats.
  152.      */
  153.     int    potModPages;        /* Number of pages that came to the front of
  154.                  * the LRU list, were writeable but were not
  155.                  * modified. */
  156.     int    notModPages;        /* Pages out of potModPages that were never
  157.                  * modified in software or hardware. */
  158.     int    notHardModPages;    /* Pages out of potModPages that were never
  159.                  * modified in hardware. */
  160.     /*
  161.      * Prefetch stats.
  162.      */
  163.     int    codePrefetches;        /* Number of prefetches of code. */
  164.     int    heapSwapPrefetches;    /* Number of prefetches of heap from swap. */
  165.     int    heapFSPrefetches;    /* Number of heap prefetches from the object 
  166.                  * file. */
  167.     int    stackPrefetches;    /* Number of prefetches that hit from the
  168.                  * stack swap file. */
  169.     int    codePrefetchHits;    /* Number of code prefetches that hit. */
  170.     int    heapSwapPrefetchHits;    /* Number of heap prefetches from swap that
  171.                  * hit. */
  172.     int    heapFSPrefetchHits;    /* Number of heap prefetches from the object
  173.                  * file that hit. */
  174.     int    stackPrefetchHits;    /* Number of stack prefetches from swap that
  175.                  * hit. */
  176.     int    prefetchAborts;        /* Number of prefetches aborted because there
  177.                      * is no memory available. */
  178.  
  179. } Vm_Stat;
  180.  
  181. extern    Vm_Stat    vmStat;
  182. #endif /* _VMSTAT */
  183.